package tp1.datos;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;

import tp1.presentacion.modelo.TipoVagon;

public class TipoVagonDAO implements DAO {

	@Override
	public void agregar(Object ob) {
		TipoVagon tv = (TipoVagon)ob;
		Conexion con = new Conexion();
		String sql = "insert into tipos_vagon (desc_tipo_vagon,porcentaje_recargo) values(?,?)";
		try {
			PreparedStatement ps = con.getConexion().prepareStatement(sql);
			ps.setString(1, tv.getDescripcion());
			ps.setInt(2, tv.getRecargo());
			ps.executeUpdate();
		} catch(SQLException sqlEx) {
			sqlEx.printStackTrace();
		} finally {
			try {
				con.getConexion().close();
			} catch (SQLException se) {
				se.printStackTrace();
			}
		}
	}

	@Override
	public ArrayList<TipoVagon> getTodos() {
		ArrayList<TipoVagon> tvs = new ArrayList<TipoVagon>();
		Conexion con = new Conexion();
		String sql = "select * from tipos_vagon;";
		try {
			Statement st = con.getConexion().createStatement();
			ResultSet rs = st.executeQuery(sql);
			while(rs.next()) {
				int cod = rs.getInt("cod_tipo_vagon");
				String desc = rs.getString("desc_tipo_vagon");
				int rec = rs.getInt("porcentaje_recargo");
				TipoVagon tvAct = new TipoVagon();
				tvAct.setCodigo(cod);
				tvAct.setDescripcion(desc);
				tvAct.setRecargo(rec);
				tvs.add(tvAct);
			}
		} catch(SQLException sqlEx) {
			sqlEx.printStackTrace();
		}
		return tvs;
	}

	@Override
	public TipoVagon getUno(int id) {
		TipoVagon tv = new TipoVagon();
		Conexion con = new Conexion();
		String sql = "select * from tipos_vagon where cod_tipo_vagon = ?;";
		try {
			PreparedStatement pst = con.getConexion().prepareStatement(sql);
			pst.setInt(1, id);
			ResultSet rst = pst.executeQuery();
			if(rst.next()) {
				String desc = rst.getString("desc_tipo_vagon");
				int rec = rst.getInt("porcentaje_recargo");
				tv.setCodigo(id);
				tv.setDescripcion(desc);
				tv.setRecargo(rec);
			}				
		} catch(SQLException sqlEx) {
			sqlEx.printStackTrace();
		}
		return tv;
	}

}
